Data communication in a computer network involves the exchange of data between two or more entities interconnected by communication links. These entities are typically software programs executing on hardware computer systems that include locally attached storage devices. Depending on their roles within the network, these computer systems may serve as intermediate network nodes or end nodes. Examples of end nodes may include client and server systems coupled to a communication link, such as a point-to-point link, shared local area network, wide area network or virtual private network implemented over a public network, such as the Internet.
A server is a computer configured to provide specific services; when operating according to a client/server model of information delivery, the server may be configured to allow many clients to access its services. In this model, the client may comprise an application executing on an operating system that “connects” to the server over the computer network. Each client may request the services of the server by issuing protocol messages (in the form of packets) to the server over the network. The server then responds to the client request by returning the requested services in the form of packets transported over the network.
A filer is a server configured to provide file service relating to the organization of information on storage devices, such as disks. The filer may be embodied as a storage system including a storage operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on the disks. Each “on-disk” file may be implemented as a set of disk blocks configured to store information, such as data, whereas the directory may be implemented as a specially formatted file in which information about other files and directories are stored.
An example of an application running on a client is the Microsoft® Exchange application available from Microsoft Corporation, Redmond, Wash. Microsoft Exchange is a messaging and collaboration software product that provides a variety of applications for group interaction using networked computer systems. An Exchange application can run on a variety of operating systems including, for example, the Microsoft Windows® NT™ or Microsoft Windows 2000 operating system. The Microsoft NT operating system is described in Inside Windows NT by Helen Custer, Microsoft Press, 1993.
A file system designed for use with the NT or Windows 2000 operating system is the NT file system (NTFS). In NTFS, each unit of information associated with a file, including its name, its owner, its time stamps and its data contents, is implemented as a file attribute. Both files and directories have attributes, wherein each attribute consists of a single stream or sequence of bytes. This implementation facilitates the addition of more attributes, including data content attributes, to a file. The NTFS file system is well known and described in Inside the Windows NT File System by Helen Custer, Microsoft Press, 1994.
The conventional Small Computer System Interface (SCSI) protocol is a block access protocol configured to access storage devices (disks). Many computer systems use the SCSI protocol to access data on storage devices locally attached to the systems. Many systems also support facilities adapted to access network attached storage through file access protocols, such as the Network File System (NFS) and Common Internet File System (CIFS) protocols. Applications running on a client system can access files contained on either locally attached or network attached storage.
There are differences, however, in the interpretation of data that is exchanged using block access protocols compared to file access protocols. A block access protocol, such as the SCSI protocol, “assumes” that the storage device is composed of a sequence of blocks, each containing either data or available space for storing data. Requests for retrieving (reading) or storing (writing) data contain references for block numbers and data lengths. As a result, an application issuing a SCSI request (i.e., a SCSI requester) must have knowledge of the meta-data mapping between the desired data and the physical location of that data on the storage device.
In contrast, file access protocols assume that the server contains a file system on which file data is stored. The file system generally refers to structuring of data and metadata on storage devices, such as disks, which permits reading/writing of data on those disks. The file system also includes mechanisms for performing these operations. While different file access protocols provide different semantics, each protocol fundamentally provides access to file system constructs, such as directories and files. The file server is responsible for mapping the files to its storage system.
A filer generally provides higher data capacity, data storage speed and data access speed than disks locally attached to a client. It is therefore often desirable for a client system to utilize a filer for networked data storage. However, some applications running on a client are unable to utilize networked data storage because the file system operations provided by the file access protocol may not fully match the operations provided by the file system residing on the client. For example, some operations that are available on the NTFS file system used with the Windows 2000 operating system are not available over the CIFS protocol.
As a result, an application, such as Exchange, that is running on the client can only write data to, and read data from, locally attached storage devices using a block access protocol, such as the SCSI protocol. The application must query the type of storage device using, e.g., a Win32 application programming interface (API), and decide whether it can use that device. This prevents use of the CIFS protocol for some classes of applications. The advantages of data storage on a file server, including data integrity and backup services implemented on the file server, are thus not available to the application.